"""
基础计算引擎接口
"""
from abc import ABC, abstractmethod
from typing import Dict, List, Any, Optional
import logging

logger = logging.getLogger(__name__)


class BaseEngine(ABC):
    """
    基础计算引擎抽象类，定义计算引擎接口
    """
    
    def __init__(self, config: Dict[str, Any]):
        """
        初始化计算引擎
        
        Args:
            config: 引擎配置
        """
        self.config = config
    
    @abstractmethod
    def validate_input(self, input_data: Dict[str, Any]) -> Dict[str, Any]:
        """
        验证输入数据
        
        Args:
            input_data: 输入数据
            
        Returns:
            验证结果，包含是否有效和错误信息
        """
        pass
    
    @abstractmethod
    def execute(self, input_data: Dict[str, Any]) -> Dict[str, Any]:
        """
        执行计算
        
        Args:
            input_data: 输入数据
            
        Returns:
            计算结果
        """
        pass
    
    @abstractmethod
    def get_progress(self) -> float:
        """
        获取计算进度
        
        Returns:
            进度百分比（0-100）
        """
        pass
    
    @abstractmethod
    def cancel(self) -> bool:
        """
        取消计算
        
        Returns:
            是否取消成功
        """
        pass
    
    @abstractmethod
    def get_supported_parameters(self) -> List[Dict[str, Any]]:
        """
        获取支持的参数列表
        
        Returns:
            参数列表，每个参数包含名称、类型、描述等信息
        """
        pass